home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / dviware / dvidoc / txt.sh < prev    next >
Linux/UNIX/POSIX Shell Script  |  1994-04-24  |  4KB  |  211 lines

  1. #!/bin/sh
  2. #
  3. # shell script to convert LaTeX, SliTeX, and TeX documents to ascii text
  4. #
  5. # Copyright (C) 1988 by Olivetti Research Center
  6. #
  7. # Author:
  8. #    Pehong Chen
  9. #    Olivetti Research Center
  10. #    Menlo Park, California
  11. #    (chen@orc.olivetti.com)
  12. #
  13.  
  14. tmp=./#TMP#
  15. txt=
  16. stdout=
  17. maxcount=3
  18.  
  19. trap "rm -f $src
  20. rm -f $dvi
  21. rm -f $log
  22. if test -d "$tmp"; then
  23.     mv $tmp/* .
  24.     rm -rf $tmp
  25. fi" 0 1 2 15
  26.  
  27. TEXFONTS=.:/silo/tex/tfm
  28. export TEXFONTS
  29.  
  30. prog="`basename $0`"
  31. version="Olivetti Version 1.2"
  32. date="<10 Jan 1989>"
  33. default="$prog [-e] [-s<starting page>] [-m<no. of pages>] <filename>"
  34.  
  35. if test $# -eq 0; then
  36.     echo "Argument missing."
  37.     echo "$default"
  38.     exit 1
  39. fi
  40.  
  41. echo "This is $prog, a TeX-to-ascii converter, $version $date" >&2
  42. /bin/echo -n "Checking arguments and backing up files" >&2
  43.  
  44. src=
  45. format=latex
  46. convert=dvidoc
  47. flags=-e
  48. sp=
  49. np=
  50.  
  51. while test $# -gt 0; do
  52.     /bin/echo -n "." >&2
  53.     case $1 in
  54.     -s[0-9]*)
  55.         flags="$flags $1"
  56.         sp="`echo $1 | sed 's/-s//'`"
  57.         ;;
  58.     -m[0-9]*)
  59.         flags="$flags $1"
  60.         np="`echo $1 | sed 's/-m//'`"
  61.         ;;
  62.     -o)
  63.         stdout=TRUE
  64.         ;;
  65.     -*)
  66.         echo "..falied" >&2
  67.         echo "Unknown option $1." >&2
  68.         echo "$default" >&2
  69.         exit 1
  70.         ;;
  71.     *)
  72.         if test -z "$1"; then
  73.             echo "..falied" >&2
  74.             echo "No source file specified." >&2
  75.             echo "$default" >&2
  76.             exit 1
  77.         fi
  78.         src="$1"
  79.         ;;
  80.     esac
  81.     shift
  82. done
  83.  
  84. /bin/echo -n "." >&2
  85. if test -r "$src"; then
  86.     base=`echo $src | sed 's/\..*//'`
  87. else
  88.     if test -r "$src.tex"; then
  89.         base=$src
  90.         src="$src.tex"
  91.     else
  92.         echo ".falied" >&2
  93.         echo "Failed to find file $src or $src.tex." >&2
  94.         echo "$default" >&2
  95.         exit 1
  96.     fi
  97. fi
  98.  
  99. dvi=$base.dvi
  100. log=$base.log
  101. txt=$base.txt
  102. err=$base.err
  103. tmpsrc=$tmp/$src
  104. tmpdvi=$tmp/$dvi
  105. tmplog=$tmp/$log
  106.  
  107. rm -rf $tmp
  108. mkdir $tmp
  109.  
  110. /bin/echo -n "." >&2
  111. if test -r "$src"; then
  112.     mv -f $src $tmpsrc
  113. fi
  114.  
  115. /bin/echo -n "." >&2
  116. if test -r "$dvi"; then
  117.     mv -f $dvi $tmpdvi
  118. fi
  119.  
  120. /bin/echo -n "." >&2
  121. if test -r "$log"; then
  122.     mv -f $log $tmplog
  123. fi
  124.  
  125. for i in *.aux
  126. do
  127.     /bin/echo -n "." >&2
  128.     if test -r "$i"; then
  129.         cp $i $tmp
  130.     fi
  131. done
  132.  
  133. /bin/echo -n "." >&2
  134. if test "`egrep "\\documentstyle.*{.*}" $tmpsrc`"; then
  135.     /bin/echo -n "." >&2
  136.     if test "`egrep "\\documentstyle.*{slides}" $tmpsrc`"; then
  137.         format=slitex
  138.     fi
  139.     /bin/echo -n "." >&2
  140.     sed 's/\(\\documentstyle\[.*\),dvidoc\(.*\]\)/\1\2/
  141.     s/\(\\documentstyle\[\)dvidoc,\(.*\]\)/\1\2/
  142.     s/\(\\documentstyle\[.*\)\]/\1,dvidoc\]/
  143.     s/\(\\setlength{\\textwidth}\)/% \1/
  144.     s/^\(\\textwidth\)/% \1/
  145.     s/\\documentstyle{/\\documentstyle[dvidoc]{/' < $tmpsrc > $src
  146. else
  147.     /bin/echo -n "." >&2
  148.     format=tex
  149.     echo "\\input $convert" > $src
  150.     cat $tmpsrc >> $src
  151. fi
  152. echo "done" >&2
  153.  
  154. echo "Reformatting $src for plain text output..." >&2
  155. count=0
  156. base=`basename $src .tex`
  157. bibdone=""
  158. inddone=""
  159. while test $count -le $maxcount; do
  160.     rerun=""
  161.     $format $src >&2
  162.     if test $count -eq 0; then
  163.         if test ! "$bibdone" -a "`grep \^\\\\bibdata $base.log`" != ""; then
  164.             bibtex $base >&2
  165.             rerun="yes"
  166.             bibdone="yes"
  167.         fi
  168.             if test ! "$inddone" -a -r $base.idx; then
  169.             makeindex $base >&2
  170.             rerun="yes"
  171.             inddone="yes"
  172.         fi
  173.     fi
  174.     grep 'Rerun to get cross-references right.' $base.log >/dev/null && rerun="yes"
  175.     if test ! "$rerun"; then
  176.         break
  177.     fi
  178.         count=${count}1
  179. done
  180.  
  181. if test -s "$dvi"; then
  182.     if test "$sp" -a "$np"; then
  183.         /bin/echo -n "Converting dvi to ascii text from page $sp for $np pages..." >&2
  184.     else if test "$sp"; then
  185.         /bin/echo -n "Converting dvi to ascii text from page $sp to the end..." >&2
  186.     else if test "$np"; then
  187.         /bin/echo -n "Converting dvi to ascii text from page 1 for $np pages >&2
  188. ..."
  189.     else
  190.         /bin/echo -n "Converting from dvi to ascii text..." >&2
  191.     fi fi fi
  192.  
  193.     $convert $flags $dvi 1>$txt 2>&2
  194.     echo "done" >&2
  195.     if test -s "$txt"; then
  196.         echo "Corresponding ascii text written in $txt." >&2
  197.     fi
  198.     if test -s "$err"; then
  199.         echo "Conversion error log written in $err." >&2
  200.     fi
  201. else
  202.     echo "Formatting aborted, no text file generated." >&2
  203. fi
  204.  
  205. echo "Original files restored from backups." >&2
  206.  
  207. if test "$stdout" -a -s "$txt"; then
  208.     cat $txt >&1
  209.     rm -f "$txt"
  210. fi
  211.